package br.edu.universo.si.projeto2.infojob.client.rpc;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoConhecimentos;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanCurriculoCurso;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanEmpresaPerfil;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanMensagem;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanNacionalidade;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalAssinante;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalCurriculo;
import br.edu.universo.si.projeto2.infojob.client.bean.BeanVaga;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Interface com métodos de acesso ao banco. 
 */
public interface ServiceAsync
{
	void login(String conta, String senha, AsyncCallback<BeanAssinante> callback);
	void logoff(AsyncCallback<?> callback);
	void getEstados(AsyncCallback<HashMap<Integer, String>> callback);
	void getEstadosCivis(AsyncCallback<HashMap<Integer, String>> callback);
	void getSetoresAtuacao(AsyncCallback<HashMap<Integer, String>> callback);
	void getNacionalidades(AsyncCallback<List<BeanNacionalidade>> callback);
	void getTitularidades(AsyncCallback<HashMap<Integer, String>> callback);
	void getConhecimentos(AsyncCallback<HashMap<Integer, String>> callback);
	void getCurriculoConhecimentos(Integer idCurriculo, AsyncCallback<List<BeanCurriculoConhecimentos>> callback);
	void cadastrarEmpresaAssinante(BeanEmpresaAssinante bEmpresaAssinante, AsyncCallback<?> callback);
	void cadastrarVaga(BeanVaga bVaga, AsyncCallback<?> callback);
	void cadastrarEmpresaPerfil(BeanEmpresaPerfil bEmpresaPerfil, AsyncCallback<?> callback);
	void cadastrarProfissionalAssinante(BeanProfissionalAssinante profissionalAssinante, AsyncCallback<?> callback);
	void getProfissionalById(Integer idProfissional, AsyncCallback<BeanProfissionalAssinante> callback);
	void getEmpresaById(Integer idEmpresa, AsyncCallback<BeanEmpresaAssinante> callback);
	void getEmpresaPerfil(Integer idEmpresaPerfil, AsyncCallback<BeanEmpresaPerfil> callback);
	void alterarEmpresaAssinante(BeanEmpresaAssinante beanEmpresaAssinante, AsyncCallback<?> callback);
	void alterarEmpresaPerfil(BeanEmpresaPerfil beanEmpresaPerfil, AsyncCallback<?> callback);
	void alterarProfissional(BeanProfissionalAssinante bProfissionalAssinante, AsyncCallback<?> callback);
	void alterarSenha(String conta, String senha, AsyncCallback<?> callback);
	void buscarVagas(BeanVaga bVaga, AsyncCallback<ArrayList<BeanVaga>> callback);
	void getCurriculos(AsyncCallback<ArrayList<BeanProfissionalCurriculo>> callback);
	void getCurriculosByProfissional(int idProfissional, AsyncCallback<ArrayList<BeanProfissionalCurriculo>> callback);
	void getProfissionaisByVaga(int vagaId, AsyncCallback<ArrayList<BeanProfissionalAssinante>> callback);
	void getVagaById(Integer idVaga, AsyncCallback<BeanVaga> callback);
	void excluirCurriculo(Integer idCurriculo, AsyncCallback<Boolean> callback);
	void getlistCurriculoCurso(Integer id, AsyncCallback<List<BeanCurriculoCurso>> callback);
	void salvarOuAtualizarService(BeanProfissionalCurriculo bcurprof, List<BeanCurriculoConhecimentos> bcurconhecimento, AsyncCallback<Boolean> callback);
	void salvarCurriculoCurso(BeanCurriculoCurso bcurriculocurso, AsyncCallback<Integer> callback);
    void inserirCandidato(BeanVaga vaga, BeanProfissionalCurriculo bCurriculo, AsyncCallback<?> callback);
    void excluirCursoService(BeanCurriculoCurso bCurCurso, AsyncCallback<?> callback);
    void excluirVaga(int idVaga, AsyncCallback<?> callback);
    void encerrarVaga(BeanVaga bVaga, AsyncCallback<?> callback);
    void getMensagensCaixaEntrada(AsyncCallback<ArrayList<BeanMensagem>> callback);
    void getMensagensCaixaSaida(AsyncCallback<ArrayList<BeanMensagem>> callback);
    void excluirMensagemCxEntrada(Integer idMensagem, AsyncCallback<?> callback);
    void excluirMensagemCxSaida(Integer idMensagem, AsyncCallback<?> callback);
    void excluirMensagensCxEntrada(ArrayList<BeanMensagem> clMensagens, AsyncCallback<?> callback);
    void excluirMensagensCxSaida(ArrayList<BeanMensagem> clMensagens, AsyncCallback<?> callback);
    void getMensagemById(Integer idMensagem, AsyncCallback<BeanMensagem> callback);
    void setMensagemLida(BeanMensagem mensagem, AsyncCallback<?> callback);
    void enviarMensagem(BeanMensagem mensagem, AsyncCallback<?> callback);
    void getAssinanteById(Integer idAssinante, AsyncCallback<BeanAssinante> callback);
    void getRelatorioCurriculoEnviado(AsyncCallback<String> callback);
    void encerrarContaEmpresa(BeanEmpresaAssinante bEmpresaAssinante, AsyncCallback<?> callback);
    void encerrarContaProfissional(BeanProfissionalAssinante bProfissionalAssinante, AsyncCallback<?> callback);
    void buscarProfissionais(String nome, Integer idadeLimite, Integer estado, String curso, ArrayList<String> conhecimentos, AsyncCallback<ArrayList<BeanProfissionalAssinante>> callback);
}